package com.ziyueyuwen.xiniao.service;

import com.ziyueyuwen.xiniao.bean.ZyClassInfo;
import com.ziyueyuwen.xiniao.bean.page.PageData;
import com.ziyueyuwen.xiniao.bean.vo.ZyClassVO;
import com.ziyueyuwen.xiniao.enums.ClassStatusEnum;

import java.util.List;

/**
 * @author wancheng  on 2018/12/17.
 */
public interface ClassService {

    /**
     * 修改班级信息
     * @param classId
     * @param className
     * @param teacherAccount
     * @param masterAccount
     * @param studentNum
     * @throws Exception
     */
    void updateClass(Integer classId, String className, String teacherAccount, String masterAccount,Integer studentNum) throws Exception;

    /**
     * 添加班级
     * @param zyClassInfo
     * @param masterAccount
     * @param teacherAccount
     * @return
     * @throws Exception
     */
    ZyClassInfo saveClass(ZyClassInfo zyClassInfo, String masterAccount,String teacherAccount) throws Exception;

    /**
     * 修改班级
     * @param classId
     * @param className
     * @param masterAccount
     * @param studentNum
     * @throws Exception
     */
    void updateClass(Integer classId, String className, String masterAccount,Integer studentNum) throws Exception;

    /**
     * 删除班级
     * @param classId
     * @param deleteUserAccount
     * @throws Exception
     */
    void deleteClass(Integer classId,String deleteUserAccount) throws Exception;

    /**
     * 通过状态获取班级
     * @param statusEnum
     * @return
     */
    List<ZyClassInfo> getClassByStatus(ClassStatusEnum statusEnum);

    /**
     * 修改班级状态
     * @param classId
     * @param statusEnum
     */
    void updateClassStatus(Integer classId, ClassStatusEnum statusEnum);

    /**
     * 通过课程id获取班级
     *
     * @param courseId
     * @param page
     * @param rows
     * @return
     */
    PageData<ZyClassVO> getByCourseId(Integer courseId, Integer page, Integer rows);

    /**
     * 根据登录人员获取班级
     * @param userAccount
     * @param status
     * @param queryData
     * @param page
     * @param rows
     * @return
     */
    PageData<ZyClassVO> getByUserAccount(String userAccount, ClassStatusEnum status, String queryData, Integer page, Integer rows);

    /**
     * 获取班级详情
     * @param classId
     * @return
     */
    ZyClassVO getClassInfoByClassId(Integer classId);

    /**
     * 获取课程内班级列表
     * @param courseId
     * @return
     */
    List<ZyClassInfo> getByCourseId(Integer courseId);

    /**
     * 获取学生的所在班级的记录,由课节记录查询
     * @param studentAccount
     * @return
     */
    List<ZyClassVO> getClassRecord(String studentAccount);


    /**
     * 获取学生在课程下时间最近的班级
     * @param courseId
     * @param studentAccount
     * @return
     */
    ZyClassInfo getStudentRecentlyClass(Integer courseId,String studentAccount);

    /**
     * 修改课程描述和图片
     * @param courseId
     * @param description
     * @param imageUrl
     */
    void editClassDescriptionAndImage(Integer courseId,String description,String imageUrl);


}
